들어가며
2023년 12월.
Web3의 핵심적인 지갑을 만들게 되었다. Ethereum 블록체인에서 사용이 가능한 지갑을 만들어야 했고, Web3나 블록체인의 지식이 하나도 없던 상황인지라 우선은 가장 기본적인 기능인 FT(Fungible Tokens)와 NFT(Non-Fungible Tokens)를 보여주고 전송할 수 있는 가장 기본적인 지갑을 만들기로 하였고, 이를 테스트 하기 위한 환경도 필요하겠다고 생각하였다.
우선은 Ganache-cli를 사용한 로컬 환경에서의 조회, 전송, 트랜잭션 조회 등등 이런저런 테스트는 해봤으나 실제 블록체인에서의 테스트가 가능했으면 해서 Ethereum의 테스트넷을 알아보기로 하였다.
이 글은 23년 12월에서 1월까지 시간이 날 때마다 Ethereum 테스트넷을 알아보았던 과정을 정리하여 작성하였다.
Goerli VS Sepolia
우선은 아무런 지식이 없었던 나도 한 번쯤은 들어봤던 Goerli라는 테스트넷을 사용하려고 하였다.
그런데, 구글에 바로 ethereum testnet을 검색해 보았더니 곧바로 Sepolia라는 또 다른 Ethereum 테스트넷이 있다는 사실을 알게 되었고, 이 Sepolia라는 테스트넷에 알아보기로 하였다.
Sepolia는 Goerli 보다 더 최근에 등장한 테스트넷이었고, '기왕 사용해 보는 거, 더 최근에 나온 테스트넷을 써보는 게 좋지 않을까?' 하는 생각에 Sepolia 테스트넷쪽에 더 마음이 기울었다.
먼저 Sepolia 깃헙의 readme를 읽어 보았다.
Sepolia는 이더리움의 크로스 클라이언트 Proof of Authority (PoA) 테스트넷으로, 기존의 Rinkeby와 Kovan 테스트넷을 대체하게 되었습니다. 이 테스트넷은 분산 애플리케이션, 스마트 계약, 그리고 다른 EVM 기능을 테스트하는 이상적인 장소로 설계되었습니다.
주요 특징 및 정보:
- 네트워크 ID와 체인 ID: 둘 다 11155111로, 이를 통해 Sepolia 네트워크에 연결하는 데 필요한 구성 정보를 제공합니다.
- EVM 버전: London 하드포크를 기반으로 하며, 이는 Sepolia가 최신 이더리움 기능과 개선사항을 지원함을 의미합니다.
- 합의 메커니즘: PoA로, 특정 검증자가 네트워크의 보안과 트랜잭션 검증을 담당합니다. 이는 테스트넷에서 높은 트랜잭션 처리량과 빠른 블록 생성 시간을 가능하게 합니다.
- Shanghai와 Cancun 하드포크: 특정 Unix 시간에 따라 예정된 이벤트를 나타냅니다. 이는 네트워크가 지속적으로 업데이트되고 발전함을 보여줍니다.
위에서도 이야기하였듯이 Web3와 블록체인에 대한 지식이 거의 없다시피 하던 상황인지라... 무슨 말인지 도무지 알 수가 없었다.
그나마 합의 메커니즘이 PoA라는 것 정도가 다였고, 이마저도 들어만 봤던거지 그래서 PoA가 어떻게 작동되는 건지도 잘 모르던 상황이었다.
이럴 때는 요즘 GPT의 도움을 요청해 보는 편이라 이 친구에게도 질문을 해보았다.
질문 : 나는 지갑의 기본적인 기능인 FT와 NFT를 전송하고, 관리 할 수 있는 지갑을 만드려고 하는데 적합한 테스트넷이 뭐야?
답 : 지갑의 기본적인 기능인 Fungible Tokens (FTs)와 Non-Fungible Tokens (NFTs)를 전송하고 관리할 수 있는 기능을 개발하고 테스트하기 위해, 여러분에게는 안정적이고 널리 사용되는 테스트넷이 필요합니다. 이 경우, Goerli와 Sepolia 테스트넷 중 하나를 선택할 수 있습니다. 각 테스트넷의 특성을 고려하여 프로젝트에 가장 적합한 테스트넷을 선택해야 합니다.
Goerli 테스트넷
Goerli 테스트넷은 Proof of Authority (PoA) 합의 메커니즘을 사용하며, 여러 이더리움 클라이언트와의 호환성이 뛰어납니다. 이는 네트워크의 안정성과 접근성을 보장하며, 다양한 개발 환경을 지원합니다.
적합한 경우:
- 여러분이 다양한 이더리움 클라이언트와의 호환성을 테스트하고자 할 때.
- 네트워크의 안정성을 중시할 때.
Sepolia 테스트넷
Sepolia 테스트넷은 최근 Proof of Stake (PoS)로 전환되었으며, 이더리움 2.0으로의 전환과 관련된 기능을 테스트하는 데 적합합니다. Sepolia는 이더리움 개발자들에게 최신 기능과 업데이트를 테스트할 수 있는 환경을 제공합니다.
적합한 경우:
- 이더리움 2.0과 관련된 기능을 테스트하고자 할 때.
- 최신 이더리움 기능과 업데이트에 대한 테스트를 진행하고자 할 때.
결정 요소
- 개발 목표: FT와 NFT의 전송 및 관리 기능을 개발하는 것이 주목적이라면, Goerli 또는 Sepolia 모두 적합할 수 있습니다. 두 네트워크 모두 ERC-20(FT) 및 ERC-721 및 ERC-1155(NFT)와 같은 표준 스마트 계약을 배포하고 테스트하는 데 필요한 환경을 제공합니다.
- 이더리움 2.0 준비: 만약 여러분의 지갑이 이더리움 2.0의 도래와 관련된 기능을 미리 준비하고자 한다면, Sepolia가 더 적합할 수 있습니다.
- 커뮤니티 및 리소스: 개발 중에 접근할 수 있는 리소스와 커뮤니티의 지원도 중요한 고려사항입니다. Goerli와 Sepolia 모두 활발한 개발자 커뮤니티를 보유하고 있으나, 특정 기능이나 도구에 대한 지원은 네트워크에 따라 다를 수 있습니다.
프로젝트의 목적과 현재 상황을 고려할 때, Goerli 테스트넷을 추천합니다. Goerli는 널리 사용되고 있으며, 다양한 이더리움 클라이언트와의 호환성이 뛰어나고 안정적인 테스트 환경을 제공합니다. 또한, FT와 NFT의 전송 및 관리와 같은 기본적인 지갑 기능을 개발하고 테스트하는 데 필요한 모든 요소를 갖추고 있습니다.
Goerli 테스트넷의 넓은 사용자 기반과 커뮤니티 지원은 개발 과정에서 발생할 수 있는 문제를 해결하는 데 도움이 될 것입니다. 또한, 이더리움 2.0으로의 전환 준비가 프로젝트의 우선 순위가 아니라면, Goerli의 안정성과 접근성은 프로젝트 개발과 테스트를 원활하게 진행하는 데 중요한 요소가 될 것입니다.
이 친구의 답변은 늘 그렇듯 검증이 필요하긴 하지만. 이번만큼은 이 친구의 의견을 따라보기로 하였다.
처음부터 생각했던 Goerli를 선정하고, 알아봤으면 조금 더 시간을 아낄 수 있었겠지만. 공부한 셈 치고, 돌고 돌아 Goerli 깃헙에 접속을 하였다.
그런데 이번엔 다른 의미로 눈에 띄는 문구가 보였다.
⚠️ Goerli will be deprecated as of January 2023.
그랬다. Goerli는 이미 지원이 중단된 상태였다. 물론 사용은 가능하겠지만 이미 지원이 중단된 지도 꽤 오래되었고, 그제야 눈에 보인 상단의 이미지로 봐서는 2024년에는 이 테스트넷 자체가 어떻게 될지도 모르는 상태다 보니 Goerli 테스트넷을 사용하는 건 포기해야 했다.
Holesky
위의 마지막 이미지는 Goerli 깃헙 상단에 있는 이미지이다. 왜 이걸 Sepolia 깃헙에서는 먼저 보지 못했는지 아쉽긴 하지만 이보다 더 중요했던 건 'Holesky'였다. Holesky 깃헙의 리드미 파일을 보고 대충 정리하자면 이 테스트넷의 특징은 다음과 같다.
- 2023년에 Goerli를 대체하여 스테이킹, 인프라, 프로토콜 개발자 테스트넷으로 사용될 예정.
- 분산 애플리케이션, 스마트 계약, 그리고 다른 EVM 기능을 테스트하기 위해서는 Sepolia를 사용하라는 권장사항.
- Holesky는 Goerli를 대체할 예정인 퍼미션리스 PoS 테스트넷.
- 2023년 9월 28일 런치.
- 2027년 까지 LTS이며, 2028년을 마지막으로 종료.
- Goerli 테스트넷 대체: Goerli의 문제를 해결하고, 이더리움 생태계에 새로운 스테이킹 및 테스트 환경을 제공.
- 분산 애플리케이션 테스트: Sepolia와 함께, Holesky는 스마트 계약과 DApps 개발자에게 중요한 테스트 환경을 제공.
Goerli의 완벽한 대체 테스트넷으로 판단이 되었고, 이더리움 2.0 또한 지원하여 앞으로 어떻게 될지 모르는 상황에 대비하기도 좋을 거 같단 생각이 들었다.
더불어 '분산 애플리케이션, 스마트 계약, 그리고 다른 EVM 기능을 테스트하기 위해서는 Sepolia를 사용하라는 권장'하라는 내용으로 봐서는 Sepolia 테스트넷은 내가 필요한 목적과는 다른 용도의 테스트넷으로 보이기도 했고, Holesky 테스트넷을 사용하기로 마음먹었다.
Holesky 홈페이지를 방문해 보니 메타마스크 지갑에 Holesky 네트워크를 추가 할 수 있는 버튼이 있어 간단하게 사용하던 메타마스크 지갑에 Holesky 테스트넷을 추가하였다.
테스트용 Ethereum 받기
지갑을 구현하며, Holesky 테스트넷에서 여러 테스트를 하려면 필요한 FT와 NFT가 필요하였는데 다행히 대부분의 테스트넷에서는 수도꼭지라는 테스트용 코인을 받을 수 있는 수단이 있다.
해당 사이트에 접속을 해보면 웬 수도꼭지 이미지가 있는데, 하단의 인풋 영역에 자신의 지갑 주소를 입력하고 'Start Mining' 버튼을 누르게 되면 일정 시간이 지난 후 약 33ETH를 받을 수 있게 된다.
테스트넷 연결
이제는 실제 구현을 위해 web3.js나 ethers.js를 이용하여 Holesky 테스트넷에 연결하는 과정이 필요한데, 여기서 필요한 내용이 RPC 주소이다.
Holesky 홈페이지에 보면 다음과 같은 내용이 있는데, 이게 바로 RPC 주소이다.
JSON RPC https://rpc.holesky.ethpandaops.io
그런데 이상하게도 이 주소를 사용하여 연결을 시도해 보았는데, 잘되지 않았다.
무슨 문제인지도 알 수 없는 상태로 이런 저런 검색을 해보았고, 대부분의 검색 결과는 infura를 통한 테스트넷 접속을 설명해 주고 있었는데 더군다나 Holesky와 관련한 국내 자료는 더욱더 찾아보기 힘든 상황이었다.
게다가 infura를 사용하려면 회원가입도 필요한 부분이 있어 개인적으로는 infura의 사용은 좀 꺼려지긴 했다.
그러던 와중 ethereum-testnet.publicnode 라는 사이트를 발견하였고, 이 또한 infura 같은 서비스처럼 보였으나 회원가입 없이 사용이 가능하여 그 당시 작업을 하고 있던 동료에게 이 사이트를 알려주며 여기 나와 있는 RPC Endpoint Link 주소를 활용하였을 때 문제 없이 Holesky 테스트넷에 연결이 되는걸 확인 하였다.
거의 테스트만을 위한 환경이다 보니 굳이 이런 서비스를 써야 하는지는 조금 의문이지만 현재로서는 이 서비스를 이용하기로 하였고, 실제 구현을 할 때에는 좀 더 알아보고, Holesky 홈페이지에 나와 있는 JSON RPC를 이용하는게 좋을거 같다.
마치며
2023년 12월 정도부터 24년 1월경까지의 일을 정리하다 보니 기간과 들어간 시간에 비해 글의 양이 생각보다 많지 않았다.
물론 테스트넷을 알아보는 과정을 매일 매일 모든 업무시간을 할애한 게 아니다 보니 전체 기간 대비 소모된 시간도 실제로는 많지 않을 수는 있을 거 같다.
이 당시 Holesky 테스트넷에 대한 국내 자료는 거의 인터넷 기사 정도가 끝이었고, 더군다나 Web3나 블록체인에 대한 지식이 거의 없다시피 한 상황에서 테스트넷 선정부터 실제 연결까지 겪었던 어려움들을 정리해 보았고, 혹여나 나와 같은 상황에 부닥친 누군가에겐 조금의 도움이 되었으면 한다.